package com.wjw.java.collection.set_;

import java.util.*;

/**
 * Set接口是Collection接口的子类：
 * Set接口的实现类有：HashSet、LinkedHashSet、TreeSet、
 * ------------------------------------------------------
 * Set集合的特点：
 * 1.无序(添加和取出元素的顺序不一致),没有索引
 * 2.不允许保存重复元素,最多只能保存一个null
 * ------------------------------------------------------
 * Set集集合遍历：
 * Itreator、foreach
 * 不能使用for循环,因为没有索引!!!
 * ------------------------------------------------------
 */
public class Set_ {
    /**
     *  Set接口的常用方法,这里使用实现类HashSet演示
     * @param args
     */
    public static void main(String[] args) {
        Set set = new HashSet();
        //1.add(),添加
        set.add("aaa");
        set.add("bbb");
        set.add("aaa");
        set.add(null);
        System.out.println(set);//[aaa, null, bbb]

        //2.addAll()添加多个元素
        Set set2 = new HashSet();
        set2.add("111");
        set2.add("222");
        set2.add("333");
        set.addAll(set2);
        System.out.println(set);//[aaa, null, 111, 222, bbb, 333]

        //3.remove()删除元素
        set.remove("aaa");
        System.out.println(set);//[null, 111, 222, bbb, 333]

        //4.removeAll()删除集合中的所有元素
        set.removeAll(set2);
        System.out.println(set);//[null, bbb]

        //5.foreach遍历
        for (Object o : set) {
            System.out.println(o);
        }

        //6.Iterator遍历
        Iterator it = set.iterator();
        while (it.hasNext()){
            Object next = it.next();
            System.out.println(next);
        }
    }
}
